//
//  ThmImageView.h
//  Nicejinux.NET
//
//  Created by Nicejinux on 12. 3. 8..
//  Copyright (c) 2012 Nicejinux.NET. All rights reserved.
//

#import <UIKit/UIKit.h>

@protocol detailThumbNailImgLoadingDelegate

- (void)detailThumbLoadingFinished;

@end

@interface ThmImageView : UIImageView

@property (nonatomic, assign) id<detailThumbNailImgLoadingDelegate> delegate;

/**
 * defaultImageName 은 cache file이 없는 경우 보여주는 용도이며,
 * cache file이 없는 경우 defaultImage를 보여주면서 loading중이라는 표시로 activity indicator가 표시된다.
 *
 * 만약 cache file이 있는경우 defaultImageName 파라미터는 무시될 것이며,
 * loading 중이라는 activity indicator도 표시되지 않는다.
 *
 * remoteImageURLArg 파라미터가 제공되어 서버로부터 새로운 image file이 loading된 경우
 * 새로 download된 image로 button 의 image가 자동 갱신된다.
 *
 * @param defaultImageName
 *   local file이 없는 경우 사용된다.
 * @param remoteImageURLArg
 *   download 받을 image url
 * @param defaultFrameRect
 *   본 이미지 button의 frame rectangle 값.
 *
 */
+ (id)imageViewWithDefaultImage:(NSString*)defaultImageName
                 remoteImageURL:(NSString*)remoteImageURLArg
               defaultFrameRect:(CGRect)defaultFrameRect;

- (void)loadURLImage:(NSString*)remoteImageURLArg;


/**
 서버로부터 이미지를 수신중에는 loadingImageName으로 전달된 이미지를 보여주고 있고,
 서버로부터 이미지를 수신 완료 한 후에는 수신된 이미지를 보여준다.
 
 기존에 cache되어 있던 이미지가 있는 경우, cache 이미지를 우선 보여준다.
 
 cache된 이미지가 없었고 이미지를 수신할 수 없는 경우 noImageName으로 전달된 이미지를 보여준다.
 
 이미지를 수신중에 activity indicator를 보여주지 않는다.
 
 @param remoteImageURLArg 수신받을 이미지 URL
 @param loadingImageName 이미지 수신중 표시할 이미지 파일명
 @param noImageName 수신받을 이미지가 없는 경우 표시할 이미지 파일명
 @returns 
 @exception 
 */
- (void)loadURLImage:(NSString*)remoteImageURLArg 
        loadingImage:(NSString*)loadingImageName 
             noImage:(NSString*)noImageName;

@end
